Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevent error from undefined title tag #16751

Closed
wants to merge 1 commit into from
Closed

Prevent error from undefined title tag #16751

wants to merge 1 commit into from

Conversation

futurepastori
Copy link

This PR addresses #6388

The children of titleComponent are either checked as a string or as an array of such, throwing an error at .join('') for the second case even for an empty <title> tag.

@ijjk
Copy link
Member

ijjk commented Sep 1, 2020

Stats from current PR

Default Server Mode (Decrease detected ✓)
General Overall increase ⚠️
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
buildDuration 11.1s 12s ⚠️ +918ms
nodeModulesSize 56.8 MB 56.8 MB ⚠️ +82 B
Page Load Tests Overall decrease ⚠️
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
/ failed reqs 0 0
/ total time (seconds) 2.014 2.097 ⚠️ +0.08
/ avg req/sec 1241.31 1192.38 ⚠️ -48.93
/error-in-render failed reqs 0 0
/error-in-render total time (seconds) 1.091 1.137 ⚠️ +0.05
/error-in-render avg req/sec 2290.96 2198.64 ⚠️ -92.32
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
677f882d2ed8..f20b.js gzip 10.3 kB 10.3 kB
framework.HASH.js gzip 39 kB 39 kB
main-49b1fd5..c64c.js gzip 7.35 kB 7.35 kB ⚠️ +1 B
webpack-e067..f178.js gzip 751 B 751 B
Overall change 57.3 kB 57.3 kB ⚠️ +1 B
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
677f882d2ed8..dule.js gzip 6.13 kB 6.13 kB
framework.HA..dule.js gzip 39 kB 39 kB
main-99715b4..dule.js gzip 6.4 kB 6.4 kB
webpack-07c5..dule.js gzip 751 B 751 B
Overall change 52.2 kB 52.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-28298..e0c9.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-000f151..65d4.js gzip 1.29 kB 1.29 kB
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.69 kB
Client Pages Modern
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-65c8a..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-4cfda7a..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.35 kB
Client Build Manifests
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_buildManifest.js gzip 322 B 322 B
_buildManife..dule.js gzip 330 B 330 B
Overall change 652 B 652 B
Rendered Page Sizes Overall increase ⚠️
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
index.html gzip 971 B 971 B
link.html gzip 977 B 979 B ⚠️ +2 B
withRouter.html gzip 964 B 964 B
Overall change 2.91 kB 2.91 kB ⚠️ +2 B

Diffs

Diff for main-b79b1e5..d98106011.js
@@ -144,8 +144,11 @@ _N_E = (window["webpackJsonp_N_E"] = window["webpackJsonp_N_E"] || []).push([
 
               if (titleComponent) {
                 var children = titleComponent.props.children;
-                title =
-                  typeof children === "string" ? children : children.join("");
+
+                if (children) {
+                  title =
+                    typeof children === "string" ? children : children.join("");
+                }
               }
 
               if (title !== document.title) document.title = title;
Diff for main-e4ec5a0..88.module.js
@@ -111,8 +111,11 @@
 
               if (titleComponent) {
                 var { children } = titleComponent.props;
-                title =
-                  typeof children === "string" ? children : children.join("");
+
+                if (children) {
+                  title =
+                    typeof children === "string" ? children : children.join("");
+                }
               }
 
               if (title !== document.title) document.title = title;
Diff for index.html
@@ -7,7 +7,7 @@
     <noscript data-n-css="true"></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-e4ec5a082a22aa0ac788.module.js"
+      href="/_next/static/chunks/main-59313024a968e38cbf38.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -82,13 +82,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-b79b1e531d6d98106011.js"
+      src="/_next/static/chunks/main-25c76a6027bd8d820351.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-e4ec5a082a22aa0ac788.module.js"
+      src="/_next/static/chunks/main-59313024a968e38cbf38.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for link.html
@@ -7,7 +7,7 @@
     <noscript data-n-css="true"></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-e4ec5a082a22aa0ac788.module.js"
+      href="/_next/static/chunks/main-59313024a968e38cbf38.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -87,13 +87,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-b79b1e531d6d98106011.js"
+      src="/_next/static/chunks/main-25c76a6027bd8d820351.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-e4ec5a082a22aa0ac788.module.js"
+      src="/_next/static/chunks/main-59313024a968e38cbf38.module.js"
       async=""
       crossorigin="anonymous"
       type="module"
Diff for withRouter.html
@@ -7,7 +7,7 @@
     <noscript data-n-css="true"></noscript>
     <link
       rel="preload"
-      href="/_next/static/chunks/main-e4ec5a082a22aa0ac788.module.js"
+      href="/_next/static/chunks/main-59313024a968e38cbf38.module.js"
       as="script"
       crossorigin="anonymous"
     />
@@ -82,13 +82,13 @@
       src="/_next/static/chunks/polyfills-f73ba3fc145972ef83e9.js"
     ></script>
     <script
-      src="/_next/static/chunks/main-b79b1e531d6d98106011.js"
+      src="/_next/static/chunks/main-25c76a6027bd8d820351.js"
       async=""
       crossorigin="anonymous"
       nomodule=""
     ></script>
     <script
-      src="/_next/static/chunks/main-e4ec5a082a22aa0ac788.module.js"
+      src="/_next/static/chunks/main-59313024a968e38cbf38.module.js"
       async=""
       crossorigin="anonymous"
       type="module"

Serverless Mode
General Overall increase ⚠️
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
buildDuration 13.2s 13.1s -149ms
nodeModulesSize 56.8 MB 56.8 MB ⚠️ +82 B
Client Bundles (main, webpack, commons) Overall increase ⚠️
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
677f882d2ed8..f20b.js gzip 10.3 kB 10.3 kB
framework.HASH.js gzip 39 kB 39 kB
main-49b1fd5..c64c.js gzip 7.35 kB N/A N/A
webpack-e067..f178.js gzip 751 B 751 B
main-6295a82..9ce3.js gzip N/A 7.35 kB N/A
Overall change 57.3 kB 57.3 kB ⚠️ +1 B
Client Bundles (main, webpack, commons) Modern
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
677f882d2ed8..dule.js gzip 6.13 kB 6.13 kB
framework.HA..dule.js gzip 39 kB 39 kB
main-99715b4..dule.js gzip 6.4 kB N/A N/A
webpack-07c5..dule.js gzip 751 B 751 B
main-41c4a28..dule.js gzip N/A 6.4 kB N/A
Overall change 52.2 kB 52.2 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
polyfills-4b..e242.js gzip 31 kB 31 kB
Overall change 31 kB 31 kB
Client Pages
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_app-9a0b9e1..b37e.js gzip 1.28 kB 1.28 kB
_error-28298..e0c9.js gzip 3.44 kB 3.44 kB
hooks-89731c..c609.js gzip 887 B 887 B
index-17468f..5d83.js gzip 227 B 227 B
link-000f151..65d4.js gzip 1.29 kB 1.29 kB
routerDirect..924c.js gzip 284 B 284 B
withRouter-7..c13d.js gzip 284 B 284 B
Overall change 7.69 kB 7.69 kB
Client Pages Modern
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_app-75d3a82..dule.js gzip 625 B 625 B
_error-65c8a..dule.js gzip 2.29 kB 2.29 kB
hooks-cbf13f..dule.js gzip 387 B 387 B
index-b9a643..dule.js gzip 226 B 226 B
link-4cfda7a..dule.js gzip 1.26 kB 1.26 kB
routerDirect..dule.js gzip 284 B 284 B
withRouter-f..dule.js gzip 282 B 282 B
Overall change 5.35 kB 5.35 kB
Client Build Manifests
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_buildManifest.js gzip 322 B 322 B
_buildManife..dule.js gzip 330 B 330 B
Overall change 652 B 652 B
Serverless bundles
vercel/next.js canary futurepastori/next.js undefined-title-crash Change
_error.js 1.03 MB 1.03 MB
404.html 4.22 kB 4.22 kB
hooks.html 3.86 kB 3.86 kB
index.js 1.03 MB 1.03 MB
link.js 1.07 MB 1.07 MB
routerDirect.js 1.07 MB 1.07 MB
withRouter.js 1.07 MB 1.07 MB
Overall change 5.28 MB 5.28 MB
Commit: 22e6e48

Copy link
Member

@lfades lfades left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@futurepastori 👋 . Please add an integration test 🙏

@lfades lfades mentioned this pull request Sep 28, 2020
@kodiakhq kodiakhq bot closed this in #17430 Sep 28, 2020
kodiakhq bot pushed a commit that referenced this pull request Sep 28, 2020
This handles the case where the children on a head element are undefined and not a string or an array of strings. This doesn't currently handle sub-children on head elements so additional handling will be needed if this is a feature we would like to support although can be discussed/investigated separately from this fix. 

Fixes: #17364  
Fixes: #6388
Closes: #16751
@vercel vercel locked as resolved and limited conversation to collaborators Jan 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants